// pages/wode/wode.js

import { createStoreBindings } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'

import Toast from '@vant/weapp/toast/toast';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {},
    phone: null,  // 用来登录
    password: null,  // 用来登录
    phoneRegister: null,  // 用来注册
    passwordRegister1: null,  // 用来注册
    passwordRegister2: null,  // 用来注册
    hasUserInfo: false,
    canIUseGetUserProfile: false,
    pageType: "login",
    loginButton: true,  // 保证登录按钮只能点击一次
    userInfoUrl: "/portal/user/",
    loginUrl: "/portal/user/login",
    registerUrl: "/portal/user/register",
    // headUrl: "http://localhost:8899/portal/icons/",
    // headUrlBat: "http://localhost:8899/portal/icons/",  // 为了退出登录用，退出该页面数据不会卸载
    headUrl: "/portal/icons/getUpLoadedImg/",
    headUrlBat: "/portal/icons/getUpLoadedImg/",  // 为了退出登录用，退出该页面数据不会卸载
    getTrolleyUrl: "/portal/trolley/myTrolley/",
  },

  onChangePhone(event) {
    // event.detail 为当前输入的值
    this.setData({
      phone: event.detail,
    })
  },

  onChangePassword(event) {
    // event.detail 为当前输入的值
    this.setData({
      password: event.detail
    })
  },

  onChangePasswordRegister1(event) {
    // event.detail 为当前输入的值
    this.setData({
      passwordRegister1: event.detail
    })
  },

  onChangePasswordRegister2(event) {
    // event.detail 为当前输入的值
    this.setData({
      passwordRegister2: event.detail
    })
  },

  onChangePageType(event) {
    this.setData({
      pageType: event.currentTarget.dataset.pagetype
    })
  },

  login(e) {
    // P操作
    this.setData({
      loginButton: false
    });
    // 登录请求
    wx.request({
      url: this.data.loginUrl,
      data: {
        phone: this.data.phone,
        password: this.data.password,
      },
      // dataType: dataType,
      method: "POST",
      success: (result) => {
        if (result.data.code == 20002) {
          Toast(result.data.msg)
          setTimeout(()=>  // 大括号里放需要延迟执行的代码
          {
            // 先拼接头像网址，后给store添加用户
            // 否则已经跳转页面了，头像网址还是错的
            let url = this.data.headUrl;
            url = url + result.data.data.userHead;  
            this.setData({
              headUrl: url
            });
            this.setUser(result.data.data);

            // 获取购物车信息
            if(this.getUser() != null) {
              let url = this.data.getTrolleyUrl + this.getUser().id;
              wx.request({
                url: url,
                method: "GET",
                success: (res) => {
                  this.updataTrolleyCount(res.data.data.length);
                }
              })
            }
            
            Toast.clear();
          }, 1000)
        }
        else {
          Toast(result.data.msg)
        }
      },
      fail: (res) => {},
      complete: (res) => {
        setTimeout(() => {
          this.setData({
            loginButton: true, // V操作
          });
        }, 1050);
      },
    })
    
  },

  register() {
    if(this.data.passwordRegister1 != this.data.passwordRegister2) {
      Toast("密码不一致");
      return;
    }

    wx.request({
      url: this.data.registerUrl,
      data: {
        phone: this.data.phone,
        password: this.data.passwordRegister1,
      },
      // dataType: dataType,
      method: "POST",
      success: (result) => {
        Toast(result.data.msg);
        if (result.data.code == 20003) {
          setTimeout(()=>
          {
            // 大括号里放需要延迟执行的代码
            this.setData({
              pageType: "login",
              phoneRegister: null,  // 用来注册
              passwordRegister1: null,  // 用来注册
              passwordRegister2: null,  // 用来注册
            });
          }, 1000)
        }
      },
      fail: (res) => {},
      complete: (res) => {},
    })
  },

  quitLogin() {
    Toast("成功退出");
    setTimeout(() => {
      this.setUser(null);
      Toast.clear();
    }, 1000);
    // 要放在user重置之后，否则image标签的路径会报错
    setTimeout(() => {
      this.updataTrolleyCount(0);
      this.setData({
        password: null,  // 用来登录
        phoneRegister: null,  // 用来注册
        passwordRegister1: null,  // 用来注册
        passwordRegister2: null,  // 用来注册
        headUrl: this.data.headUrlBat,
        loginButton: true, // V操作
      });
    },1050);
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 挂载全局数据
    this.storeBindings = createStoreBindings(this, {
      store,
      fields: ['user', 'trolleyCount'],
      actions: ['setUser', 'getUser', 'updataTrolleyCount', 'getWebsite']
    });
    this.setData({
      userInfoUrl: this.getWebsite() + this.data.userInfoUrl,
      loginUrl: this.getWebsite() + this.data.loginUrl,
      registerUrl: this.getWebsite() + this.data.registerUrl,
      headUrl: this.getWebsite() + this.data.headUrl,
      headUrlBat: this.getWebsite() + this.data.headUrlBat,
      getTrolleyUrl: this.getWebsite() + this.data.getTrolleyUrl,
    });

    // if (wx.getUserProfile) {
    //   this.setData({
    //     canIUseGetUserProfile: true
    //   })
    // };

    // wx.login({
    //   success (res) {
    //     if (res.code) {
    //       //发起网络请求
    //       wx.request({
    //         url: 'https://example.com/onLogin',
    //         data: {
    //           code: res.code
    //         }
    //       })
    //     } else {
    //       console.log('登录失败！' + res.errMsg)
    //     }
    //   }
    // })
  },

  getUserProfile(e) {
    // 推荐使用 wx.getUserProfile 获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认
    // 开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log(res),
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
        wx.showToast({
          title: '登录授权成功！',
          icon: 'none'
        })
      },
      fail: (res) =>{
        wx.showToast({
          title: '您取消了登录授权！',
          icon: 'none'
        })
      }
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    if (this.getUser() != null) {
      this.updateUser(this.getUser().id);
      this.setData({
        headUrl: this.getWebsite() + "/portal/icons/getUpLoadedImg/" + this.getUser().userHead,
      })
    }
  },

  updateUser(id) {
    wx.request({
      url: this.data.userInfoUrl + id,
      method: "GET",
      success: (res) => {
        // console.log(res.data.data);
        this.setUser(res.data.data);
      }
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    // 销毁挂载绑定
    this.storeBindings.destroyStoreBindings();
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})